import Vue from 'vue'
import Vuex from 'vuex'
import { getCar,getLogin,getUser } from "@/api/index";
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    users:[],
    // token: Window.localStorage.vuex ? JSON.parse(window.localStorage.vuex).user.token : '',
    token: '',
    // uid: window.localStorage.vuex ? JSON.parse(window.localStorage.vuex).user.uid : '',
    uid: '',
    carList:[]
  },
  getters: {

  },
  mutations: {
    changeToken(state, payload) {
      //同步方法，存储到仓库
      localStorage.setItem('token',payload)
      state.token = payload;
    },
    changeUid(state, payload) {
      state.uid = payload;
    },
    // 渲染列表页需要的数据
    update(state, data) {
      state.carList = data;
    },
    add(state,obj){
      // 查找下标，不存在，添加进购物车
      let index=state.carList.findIndex(item=>item.id==obj.id)
      if(index==-1){
        // 数量  图片 名字 价格 选中状态 id
        let obj1={
          id:obj.id,
          img:obj.img,
          name:obj.name,
          count:1,
          price:obj.price,
          flag:false,
        }
        state.carList.push({...obj1})
      }else{
        // 存在  当前下标的数量++
        state.carList[index].count++
        console.log(111);
      }
    },
    minus(state,id){
      // 因为存在最小值所以需要限定一个范围
      let o=state.carList.find(item=>item.id==id)
      o.count--
      if(o.count<1){
        o.count=1
      }
    },
    // 这个是数量加减的
    plus(state,id){
      state.carList.find(item=>item.id==id).count++
    },
    // check(state, id) {
    //   state.carList.forEach(item => {
    //     if (item.id == id) {
    //       item.flag = !item.flag;
    //     }
    //   })
    // },
    // allCheck(state, e) {
    //   state.carList.forEach(item => {
    //     item.flag = e.target.checked;
    //   })
    // }
  },
  actions: {
    async getToken({commit,state},playload) {
      // debugger
      let {data}=await getLogin(playload);
      commit('changeToken',data.token)
    },
    async getMessage({ commit }) {
      let {data} = await getUser();

      commit('changeUid', data.uid,"37");
    },
    async onCarList({commit,state}){
      let user_id=state.uid
      let {data}=await getCar({user_id});
      commit('update',data)
    }
  },
})
